package com.seres.user.vo.user;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.seres.feign.validator.annotation.NotBlank;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * @author Tan-Bowen
 * @version 1.0
 * @description TODO
 * @date 2021/8/13 10:24
 */
public class RoleVo {

    @Data
    @ApiModel("角色信息查询结果集")
    public static class PageList {

        private Long id;

        @ApiModelProperty("角色名称")
        private String name;

        @ApiModelProperty("部门id,0:默认无部门 1:平台管理员角色")
        private Long deptId;

        @ApiModelProperty("角色描述")
        private String remark;

        @ApiModelProperty("1启用")
        private Integer state;

        @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
        private Date createTime;

        @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
        private Date updateTime;

        @ApiModelProperty("创建人")
        private Long createUser;

        @ApiModelProperty("创建人名称")
        private String createName;

        @ApiModelProperty("部门名称")
        private String deptName;

        @ApiModelProperty("上级部门")
        private Long deptPid;


    }

    @Data
    @ApiModel("角色信息查询参数")
    public static class Select {

        @ApiModelProperty("角色名称")
        private String name;

        @ApiModelProperty("部门id,0:默认无部门 1:平台管理员角色")
        private Long deptId;

        @ApiModelProperty("1启用")
        private Integer state;

    }

    @Data
    @ApiModel("角色信息新增")
    public static class Create {

        @NotBlank(message = "角色名称 不能为空")
        @ApiModelProperty("角色名称")
        private String name;

        @NotNull(message = "部门 不能为空")
        @ApiModelProperty("部门id,0:默认无部门 1:平台管理员角色")
        private Long deptId;

        @ApiModelProperty("角色描述")
        private String remark;

        @NotNull(message = "角色名称 不能为空")
        @ApiModelProperty("1启用")
        private Integer state;

        @ApiModelProperty("创建人")
        private Long createUser;

    }

    @EqualsAndHashCode(callSuper = true)
    @Data
    @ApiModel("角色信息编辑")
    public static class Update extends Create {

        @NotNull(message = "id 不能为空")
        private Long id;
    }

    @Data
    @ApiModel("设置角色菜单以及权限")
    public static class SettingRolePower {

        @ApiModelProperty("角色id")
        private Long roleId;

        @ApiModelProperty("权限ids")
        private List<Long> ids;
    }


}
